50 research outputs found
Synthesizing Finite-state Protocols from Scenarios and Requirements
Scenarios, or Message Sequence Charts, offer an intuitive way of describing
the desired behaviors of a distributed protocol. In this paper we propose a new
way of specifying finite-state protocols using scenarios: we show that it is
possible to automatically derive a distributed implementation from a set of
scenarios augmented with a set of safety and liveness requirements, provided
the given scenarios adequately \emph{cover} all the states of the desired
implementation. We first derive incomplete state machines from the given
scenarios, and then synthesis corresponds to completing the transition relation
of individual processes so that the global product meets the specified
requirements. This completion problem, in general, has the same complexity,
PSPACE, as the verification problem, but unlike the verification problem, is
NP-complete for a constant number of processes. We present two algorithms for
solving the completion problem, one based on a heuristic search in the space of
possible completions and one based on OBDD-based symbolic fixpoint computation.
We evaluate the proposed methodology for protocol specification and the
effectiveness of the synthesis algorithms using the classical alternating-bit
protocol.Comment: This is the working draft of a paper currently in submission.
(February 10, 2014
Bounded Synthesis of Reactive Programs
Most algorithms for the synthesis of reactive systems focus on the
construction of finite-state machines rather than actual programs. This often
leads to badly structured, unreadable code. In this paper, we present a bounded
synthesis approach that automatically constructs, from a given specification in
linear-time temporal logic (LTL), a program in Madhusudan's simple imperative
language for reactive programs. We develop and compare two principal approaches
for the reduction of the synthesis problem to a Boolean constraint satisfaction
problem. The first reduction is based on a generalization of bounded synthesis
to two-way alternating automata, the second reduction is based on a direct
encoding of the program syntax in the constraint system. We report on
preliminary experience with a prototype implementation, which indicates that
the direct encoding outperforms the automata approach
Structural Synthesis for GXW Specifications
We define the GXW fragment of linear temporal logic (LTL) as the basis for
synthesizing embedded control software for safety-critical applications. Since
GXW includes the use of a weak-until operator we are able to specify a number
of diverse programmable logic control (PLC) problems, which we have compiled
from industrial training sets. For GXW controller specifications, we develop a
novel approach for synthesizing a set of synchronously communicating
actor-based controllers. This synthesis algorithm proceeds by means of
recursing over the structure of GXW specifications, and generates a set of
dedicated and synchronously communicating sub-controllers according to the
formula structure. In a subsequent step, 2QBF constraint solving identifies and
tries to resolve potential conflicts between individual GXW specifications.
This structural approach to GXW synthesis supports traceability between
requirements and the generated control code as mandated by certification
regimes for safety-critical software. Synthesis for GXW specifications is in
PSPACE compared to 2EXPTIME-completeness of full-fledged LTL synthesis. Indeed
our experimental results suggest that GXW synthesis scales well to
industrial-sized control synthesis problems with 20 input and output ports and
beyond.Comment: The long (including appendix) version being reviewed by CAV'16
program committee. Compared to the submitted version, one author (out of her
wish) is moved to the Acknowledgement. (v2) Corrected typos. (v3) Add an
additional remark over environment assumption and easy corner case
Comfusy: A Tool for Complete Functional Synthesis
Synthesis of program fragments from specifications can make programs easier to write and easier to reason about. We present Comfusy, a tool that extends the compiler for the general-purpose programming language Scala with (non-reactive) functional synthesis over unbounded domains. Comfusy accepts expressions with input and output variables specifying relations on integers and sets. Comfusy symbolically computes the precise domain for the given relation and generates the function from inputs to outputs. The outputs are guaranteed to satisfy the relation whenever the inputs belong to the relation domain. The core of our synthesis algorithm is an extension of quantifier elimination that generates programs to compute witnesses for eliminated variables. We present examples that demonstrate software synthesis using Comfusy and illustrate how synthesis simplifies software development
GPURepair: Automated Repair of GPU Kernels
This paper presents a tool for repairing errors in GPU kernels written in
CUDA or OpenCL due to data races and barrier divergence. Our novel extension to
prior work can also remove barriers that are deemed unnecessary for
correctness. We implement these ideas in our tool called GPURepair, which uses
GPUVerify as the verification oracle for GPU kernels. We also extend GPUVerify
to support CUDA Cooperative Groups, allowing GPURepair to perform inter-block
synchronization for CUDA kernels. To the best of our knowledge, GPURepair is
the only tool that can propose a fix for intra-block data races and barrier
divergence errors for both CUDA and OpenCL kernels and the only tool that fixes
inter-block data races for CUDA kernels. We perform extensive experiments on
about 750 kernels and provide a comparison with prior work. We demonstrate the
superiority of GPURepair through its capability to fix more kernels and its
unique ability to remove redundant barriers and handle inter-block data races.Comment: 19 pages, 1 algorithm, 3 figures, 22nd International Conference on
Verification Model Checking and Abstract Interpretation (VMCAI 2021
Exploiting the Temporal Logic Hierarchy and the Non-Confluence Property for Efficient LTL Synthesis
The classic approaches to synthesize a reactive system from a linear temporal
logic (LTL) specification first translate the given LTL formula to an
equivalent omega-automaton and then compute a winning strategy for the
corresponding omega-regular game. To this end, the obtained omega-automata have
to be (pseudo)-determinized where typically a variant of Safra's
determinization procedure is used. In this paper, we show that this
determinization step can be significantly improved for tool implementations by
replacing Safra's determinization by simpler determinization procedures. In
particular, we exploit (1) the temporal logic hierarchy that corresponds to the
well-known automata hierarchy consisting of safety, liveness, Buechi, and
co-Buechi automata as well as their boolean closures, (2) the non-confluence
property of omega-automata that result from certain translations of LTL
formulas, and (3) symbolic implementations of determinization procedures for
the Rabin-Scott and the Miyano-Hayashi breakpoint construction. In particular,
we present convincing experimental results that demonstrate the practical
applicability of our new synthesis procedure
Explainable Reactive Synthesis
Reactive synthesis transforms a specification of a reactive system, given in a temporal logic, into an implementation. The main advantage of synthesis is that it is automatic. The main disadvantage is that the implementation is usually very difficult to understand. In this paper, we present a new synthesis process that explains the synthesized implementation to the user. The process starts with a simple version of the specification and a corresponding simple implementation. Then, desired properties are added one by one, and the corresponding transformations, repairing the implementation, are explained in terms of counterexample traces. We present SAT-based algorithms for the synthesis of repairs and explanations. The algorithms are evaluated on a range of examples including benchmarks taken from the SYNTCOMP competition
An Introduction to Simulation-Based Techniques for Automated Service Composition
This work is an introduction to the author's contributions to the SOC area,
resulting from his PhD research activity. It focuses on the problem of
automatically composing a desired service, given a set of available ones and a
target specification. As for description, services are represented as
finite-state transition systems, so to provide an abstract account of their
behavior, seen as the set of possible conversations with external clients. In
addition, the presence of a finite shared memory is considered, that services
can interact with and which provides a basic form of communication. Rather than
describing technical details, we offer an informal overview of the whole work,
and refer the reader to the original papers, referenced throughout this work,
for all details
Produção de pellets à base de hidroxiapatite contendo um fármaco modelo
Tese de mestrado, Farmacotecnia Avançada, Universidade de Lisboa, Faculdade de Farmácia, 2012Este trabalho foi realizado tendo como objectivo principal a produção de pellets à base de hidroxiapatite com diferentes dimensões e porosidades, uma vez que a utilização de pellets de dimensões variadas permite um melhor preenchimento do espaço/cavidades ósseas e que a porosidade é um factor promotor da osteointegração.
Os pellets foram produzidos através da tecnologia de extrusão-esferonização utilizando fieiras de diferentes diâmetros. Como potencial promotor da formação dos poros foi incluÃdo cloreto de sódio com diferentes granulometrias na estrutura dos pellets. Os pellets produzidos foram sinterizados e posteriormente mergulhados sob vácuo numa solução de ibuprofeno para incorporação desta substância activa na sua estrutura.
Os resultados obtidos neste trabalho mostram que a tecnologia utilizada permitiu produzir pellets de diferentes dimensões por extrusão-esferonização embora não tenha sido possÃvel optimizar a produção desses pellets com estruturas macroporosas.
Foi possÃvel verificar que o aumento da temperatura de sinterização conduziu a uma maior densificação do material com redução da porosidade e que o cloreto de sódio presente nos pellets conduziu a uma menor contracção dos mesmos quando comparados com os das formulações testadas contendo hidroxiapatite modificada sem cloreto de sódio.
Adicionalmente os resultados obtidos no ensaio de dissolução indicam que o ibuprofeno deverá ter ficado apenas à superfÃcie dos pellets.
Ainda que não tenha sido possÃvel obter as estruturas macroporosas propostas, os restantes objectivos deste trabalho foram atingidos, tendo sido possÃvel produzir pellets de hidroxiapatite utilizando a tecnologia de extrusão-esferonização e sua caracterização.The purpose of this work was to produce pellets of hydroxyapatite with different sizes and porosity. This was done because the use of pellets with different dimensions allows a better filling of bone cavities and the porosity is an important variable of osteointegration.
The pellets were produced by extrusion-spheronization using extrusion screens of different diameters. Sodium chloride with different particle sizes was added to the pellets formulation as a potencial porogenic component. The pellets were sintered and afterwards they were soaked under vacuum in an ibubrofen solution to promote its incorporation in the structure.
The data produced revealed that the technology of extrusion-spheronization was adequate to manufacture pellets with different sizes although it was not possible to optimize macroporous structures.
It was possible to verify that the sintering temperature led to a densification of material with porosity reduction and that the sodium chloride led to lower collapse of the pellets when compared with the tested formulations with modified hydroxyapatite without sodium chloride.
Adicionally, the dissolution results indicate that ibuprofen should have stayed only on the pellets external surface.
Although it was not possible to obtain the proposed macroporous structures, the other objectives of this study were attained, having been possible to produce hydroxyapatite pellets by the extrusion-spheronization technology and characterize them
Program Repair Suggestions from Graphical State-Transition Specifications
Abstract. In software engineering, graphical formalisms, like state-transition tables and automata, are very often indispensable parts of the specifications. Such a formalism usually leads to specification re-finement that maintains the simulation/bisimulation relation between an implementation and a specification. We investigate how to use formal techniques to generate suggestions for repairing a program that breaks the bisimulation relation with a graphical specification. We use state graphs as a unified representation of the program models and specifica-tions. We propose a technique that may evaluate the cost of a repair. We present a PTIME heuristic algorithm that suggests how to repair a model state graph. We then explain how to derive repair suggestions for programs from the repair for state graphs. Finally, we report our experi-ment that checks the performance of our repair algorithms and the costs of our repairs. Key words: state graph, state transition relation, repair, graph theory, cost, evaluation, equivalence, bisimulation